// 抽离部分
<template>
  <div class="item" style="width: 100%">
    <div class="name">{{ item.name }}</div>
    <div class="manager">{{ item.manager }}</div>
    <el-dropdown class="dropdown" @command="commandEvent">
      <span>
        <span>操作</span>
        <i
          class="el-icon-arrow-down el-icon--right"
        /></span>
      <template #dropdown>
        <el-dropdown-menu>
          <el-dropdown-item command="add"> 添加子部门 </el-dropdown-item>
          <el-dropdown-item v-if="!item.top" command="look">
            编辑部门
          </el-dropdown-item>
          <el-dropdown-item v-if="!item.top" command="del">
            删除部门
          </el-dropdown-item>
        </el-dropdown-menu>
      </template>
    </el-dropdown>
  </div>
</template>

<script>
// 导入删除接口
import { companyDepartmentDel } from '@/api/departments'
export default {
  name: '',
  props: {
    item: {
      type: Object,
      // 默认值为简单数据类型时直接写值  复杂数据类型需要return 一个函数
      default: () => ({}) // ()=>{return {}}
    }
  },
  data() {
    return {}
  },
  computed: {},
  created() {},
  methods: {
    commandEvent(command) {
      switch (command) {
        case 'add':
          console.log('添加事件')
          // 触发事件总线 点击后将点击项的数据传递给弹框 add表示添加
          this.$bus.$emit('showDialog', true, this.item, 'add')
          break
        case 'look':
          console.log('查看')
          // 触发事件总线 点击后将点击项的数据传递给弹框 edit表示编辑 传递给add组件
          this.$bus.$emit('showDialog', true, this.item, 'edit')
          break
        case 'del':
          console.log('删除')
          // 点击删除之后,携带id 调用接口请求
          // 提示用户是否删除
          // this.$confirm('内容', '标题', { confirmButtonText: '确定',cancelButtonText:'取消' }).then(()=>{}).catch(()=>{})
          this.$confirm(`确定删除该部门:[${this.item.name}]`, '提示', {
            confirmButtonText: '确定',
            cancelButtonText: '取消'
          })
            .then(async() => {
              await companyDepartmentDel(this.item.id)
              // 提示用户删除成功
              this.$message.success('删除成功')
              // 重新触发父组件的渲染
              this.$emit('getData')
            })
            .catch(() => {
              // this.$message.error('取消删除')
            })
          break
      }
    }
  }
}
</script>
<style lang="scss" scoped>
.item {
  display: flex;
  align-items: center;
  .name {
    flex: 1;
  }
  .manager {
    width: 120px;
    margin-right: 20px;
    text-align: right;
  }
}
</style>
